package com.zbkj.crmeb.store.request;

import java.io.Serializable;
import java.util.List;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.common.PageRequest;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 商品表
 * </p>
 *
 * @author Mr.Zhang
 * @since 2020-05-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_store_product")
@ApiModel(value = "StoreProduct对象", description = "商品表")
public class StoreProductSearchRequest extends PageRequest implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "类型（0:所有 ,1：出售中（已上架），2：仓库中（未上架），3：已售罄，4：警戒库存，5：回收站 , 6：待审核 , 7: 库存深度 , 8: 昨日热销 , 9: 近30天热销）")
    @NotNull
    @Min(value = 0, message = "类型不能小于0")
    @Max(value = 9, message = "类型不能大于9")
    private int type;

    @ApiModelProperty(value = "分类ID， 多个逗号分隔")
    private String cateId;

    @ApiModelProperty(value = "分类ID集合")
    private List<Integer> cateIds;

    @ApiModelProperty(value = "关键字搜索， 支持(商品名称, 商品简介, 关键字, 商品条码)")
    private String keywords;

    @ApiModelProperty(value = "标准商品关键字")
    private String normKeywords;

    @ApiModelProperty(value = "品牌ID")
    private String brandId;

    @ApiModelProperty(value = "品牌ID集合")
    private List<Integer> brandIds;

    @ApiModelProperty(value = "发货地")
    private List<Integer> stockAreas;

    @ApiModelProperty(value = "状态（0：未上架，1：上架）")
    private Boolean isShow;

    @ApiModelProperty(value = "是否热卖")
    private Boolean isHot;

    @ApiModelProperty(value = "是否优惠")
    private Boolean isBenefit;

    @ApiModelProperty(value = "是否小编推荐")
    private Boolean isBest;

    @ApiModelProperty(value = "是否新品")
    private Boolean isNew;

    @ApiModelProperty(value = "是否推荐")
    private Boolean isGood;

    @ApiModelProperty(value = "是否易时尚商品")
    private Boolean merUse;

    @ApiModelProperty(value = "是否标准商品")
    private Boolean isNorm;

    @ApiModelProperty(value = "筛选供应商")
    private Integer isEurope;

    @ApiModelProperty(value = "过滤供应商")
    private List<Integer> isNotEurope;

    @ApiModelProperty(value = "供应商筛选")
    private Integer supplierId;

    @ApiModelProperty(value = "供应商ID集合")
    private List<Integer> supplierIds;

    @ApiModelProperty(value = "绑定商品数量")
    private Integer productCount;

    @ApiModelProperty(value = "最小库存")
    private Integer minStock;
    @ApiModelProperty(value = "最大库存")
    private Integer maxStock;
    @ApiModelProperty(value = "最小价格")
    private Integer minPrice;
    @ApiModelProperty(value = "最大价格")
    private Integer maxPrice;
    // TODO 不知为何是list
    @ApiModelProperty(value = "商户id")
    private List<Integer> merId;

    @ApiModelProperty(value = "最小折扣")
    @TableField(exist = false)
    private Double minDiscount;

    @ApiModelProperty(value = "最大折扣")
    @TableField(exist = false)
    private Double maxDiscount;

    @ApiModelProperty(value = "创建时间起")
    private String createTimeStart;
    @ApiModelProperty(value = "创建时间止")
    private String createTimeEnd;
    @ApiModelProperty(value = "更新时间起")
    private String updateTimeStart;
    @ApiModelProperty(value = "更新时间止")
    private String updateTimeEnd;
    @ApiModelProperty(value = "专区")
    private String zoneId;

    @ApiModelProperty(value = "季节代码")
    private String seasonCode;

    @ApiModelProperty(value = "是否导出图片")
    private Boolean isImg;

    @ApiModelProperty(value = "加价方式 0:默认加价率 3:加价率  4：原价折扣 ")
    private Integer premiumType;

    @ApiModelProperty(value = "平台推荐 true")
    private Boolean platformRecommended;

    @ApiModelProperty(value = "售价最小折扣")
    private Double minSaleDiscount;

    @ApiModelProperty(value = "售价最大折扣")
    private Double maxSaleDiscount;

    @ApiModelProperty(value = "成交价最小折扣")
    private Double minTradeDiscount;

    @ApiModelProperty(value = "成交价最大折扣")
    private Double maxTradeDiscount;

    @ApiModelProperty(value = "成本价排序： 0 : 正序，1:倒叙")
    private Integer costSort;

    @ApiModelProperty(value = "订单类型 1:自建(全新)2:云仓3:自建(二手)")
    private Integer orderType;

    @ApiModelProperty(value = "是否查询售价低于成本价")
    private boolean sellingBelowCost;

    @ApiModelProperty(value = "上新查询时间")
    private String dateLimit;

    @ApiModelProperty(value = "推荐图搜索")
    private Boolean recommendFlag;

    @ApiModelProperty(value = "自建商品推送状态( 0未推送  1审核中  2已通过  3已拒绝)")
    private Integer selfPushStatus;

    @ApiModelProperty(value = "是否会员折扣搜索,false否,true是")
    private Boolean memberDiscountFlag;

    @ApiModelProperty(value = "商户id")
    private Integer merchantId;

    @ApiModelProperty(value = "批采单ID集合")
    private List<Integer> pickingIds;

    @ApiModelProperty(value = "活动ID集合")
    private List<Integer> activityIds;

    @ApiModelProperty(value = "标签名称")
    private String labelName;

    @ApiModelProperty(value = "价格排序( 0 低到高   1高到低)")
    private Integer priceSort;
    
    @ApiModelProperty(value = "是否满减送商品查询")
    private Boolean isDiscount;
    
    @ApiModelProperty(value = "满减送id(编辑时必传)")
    private Integer discountId;

    @ApiModelProperty(value = "条形码")
    private String selfSourceSkuId;

    @ApiModelProperty(value = "商品自增ID")
    private List<String> productAutoIds;

    @ApiModelProperty(value = "商品推送状态")
    private List<String> productPushStatusList;

}
